<template>
  <div class="textEdit" ref="editor"></div>
</template>

<script>
import E from 'wangeditor'
import { uploadImg } from '@/services/courses'
export default {
  name: 'textEdit',
  props: {
    value: {
      type: String,
      default: ''
    }
  },
  data () {
    return {
      editor: null,
      // 要编辑的数据是否加载完成
      isLoaded: false
    }
  },
  // 需要进行 DOM 操作,使用 mounted 钩子
  mounted () {
    // 初始化富文本编辑器
    this.initEditText()
  },
  // 由于编辑请求数据为异步操作，而富文本编辑器中的 DOM 功能为同步，所以编辑时会出现富文本编辑器显示默认文本的情况，
  // 这时需要通过 watch 来侦听 value 变化，并进行初始内容更新（新增功能不存在此问题）。
  watch: {
    value () {
      if (!this.isLoaded) {
        this.editor.txt.html(this.value)
        this.isLoaded = true
      }
    }
  },
  methods: {
    initEditText () {
      const editor = new E(this.$refs.editor)
      editor.config.onchange = value => {
        this.$emit('input', value)
      }
      editor.config.customUploadImg = async function (resultFiles, insertImgFn) {
        // resultFiles 是 input 中选中的文件列表
        // insertImgFn 是获取图片 url 后，插入到编辑器的方法
        const fd = new FormData()
        fd.append('file', resultFiles[0])
        const { data } = await uploadImg(fd)
        console.log(data)
        if (data.code === '000000') {
          // 上传图片，返回结果，将图片插入到编辑器中
          insertImgFn(data.data.name)
        }
      }
      editor.create()
      editor.txt.html(this.value)
      this.editor = editor
    }
  }
}
</script>

<style>

</style>
